package com.liu.design.structure.bridge;

/**
 * @author LIU
 * @version 1.0
 * @date 2024/5/6 16:59
 * @description 桥接模式(Bridge)
 * 通过使用封装、聚合及继承等行为让不同的类承担不同的职责，将实现与抽象放在两个不同的类层次中，
 * 使两个层次可以独立改变，保持各部分的独立性以及应对他们的功能扩展
 *
 * 实现了抽象和实现部分的分离，让抽象部分和实现部分独立开来
 *
 *
 *
 * 常见的应用场景（两个维度）:
 *    -银行转账系统
 *    转账分类: 网上转账，柜台转账，AMT转账
 *    转账用户类型：普通用户，银卡用户，金卡用户…
 *    -消息管理
 *    消息类型：即时消息，延时消息
 *    消息分类：手机短信，邮件消息，QQ消息…
 *
 */
public class Test {
    public static void main(String[] args) {
        ButtonPhone buttonPhone = new ButtonPhone(new Huawei());
        buttonPhone.open();
        buttonPhone.call();
        buttonPhone.close();

        System.out.println("=====================================");
        SmartPhone smartPhone = new SmartPhone(new Xiaomi());
        smartPhone.open();
        smartPhone.call();
        smartPhone.close();
    }
}
